<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Changes in GTK+ 3.20: GTK+ 3 Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<link rel="home" href="index.html" title="GTK+ 3 Reference Manual">
<link rel="up" href="gtk-migrating-3-x-to-y.html" title="Migrating from one GTK+ 3 release to another">
<link rel="prev" href="ch32s09.html" title="Changes in GTK+ 3.18">
<link rel="next" href="ch32s11.html" title="Changes in GTK+ 3.22">
<meta name="generator" content="GTK-Doc V1.33.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="gtk-migrating-3-x-to-y.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="ch32s09.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="ch32s11.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id-1.6.9.13"></a>Changes in GTK+ 3.20</h2></div></div></div>
<p>
      The way theming works in GTK+ has been reworked fundamentally, to
      implement many more CSS features and make themes more expressive.
      As a result, custom CSS that is shipped with applications and third-party
      themes will need adjustments. Widgets now use element names much more
      than style classes; type names are no longer used in style matching.
      Every widget now documents the element names it has and the style classes
      it uses. The GTK+ inspector can also help with finding this information.
    </p>
<p>
      GTK+ now uses internal subobjects (also known as gadgets) for allocating
      and drawing widget parts. Applications that subclass GTK+ widgets may see
      warnings if they override the size_allocate vfunc and don't chain up.
      The proper way to subclass is to chain up in size_allocate. If you do not
      want to do that for some reason, you have to override the draw vfunc as
      well.
    </p>
<p>
      Several fixes for window sizing and window placement with client-side
      decorations may affect applications that are saving and restoring window
      sizes. The recommended best practice for this which is known to work with
      client-side and server-side decorations and with older and newer versions
      of GTK+ is to use <a class="link" href="GtkWindow.html#gtk-window-get-size" title="gtk_window_get_size ()"><code class="function">gtk_window_get_size()</code></a> to save window sizes and
      <a class="link" href="GtkWindow.html#gtk-window-set-default-size" title="gtk_window_set_default_size ()"><code class="function">gtk_window_set_default_size()</code></a> to restore it.
      See https://wiki.gnome.org/HowDoI/SaveWindowState for a detailed example.
    </p>
<p>
      Geometry handling in GtkWindow has been removed. If you are using the
      functions gtk_window_resize_to_geometry, gtk_window_set_default_geometry,
      gtk_window_parse_geometry or gtk_window_set_geometry_hints, you may need
      to make some changes to your code.
    </p>
<p>
      GtkDrawingArea used to implicitly render the theme background before
      calling the ::draw handler. This is no longer the case. If you rely
      on having a theme-provided background, call <a class="link" href="GtkStyleContext.html#gtk-render-background" title="gtk_render_background ()"><code class="function">gtk_render_background()</code></a>
      from your ::draw handler.
    </p>
<p>
      The GtkFileChooser interface prerequisite changed from GtkWidget
      to GObject, allowing non-widget implementations of this interface.
      This is a minor change in ABI, as applications are no longer guaranteed
      that a GtkFileChooser also supports all GtkWidget methods. However, all
      previously existing implementations still derive from GtkWidget, so no
      existing code should break.
    </p>
<p>
      The way in which GtkLevelBar determines the offset to apply was a bit
      inconsistent in the past; this has been fixed. Applications that are using
      custom offsets should double-check that their levels look as expected.
    </p>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.33.1</div>
</body>
</html>